<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 一,class继承
      class Fu {
        constructor(x, y) {

          
          this.x = x;
          this.y = y;
        }
        say() {
          console.log('我是父类的方法',this.x + this.y);
        }
        box(){
          console.log('我是父类里的盒子');
        }
      }
      // class中使用extends来实现继承
      class Son extends Fu{
        constructor(x,y){
          // 这边传参的话是传递到父类的constructor上面
          super(x,y)
          // 在子类中可以使用super调用父类里的方法
          super.box()
        }
      }
      const son=new Son(5,8)
      son.say()



      // 1.为什么会有class继承?
      // 类的继承更加简单,书写简便

      // 2.class怎么继承?
      // class中使用extends来实现继承,调用父类里的方法可以使用super关键字

      // 3.Es6的class继承和Es5有什么区别?
      // 01.实例创建不同:子类实例的构建，基于父类实例，只有super方法才能调用父类实例
      // 02.getPrototypeOf 结果不同:在类继承中,子类的prototype是连接到父类的,原型链继承中的构造函数都是通过prototype指向的原型对象互相联系的
      // 03.this创建的顺序是不同的:Es5的话是先创建子类实例对象的this,然后再将父类的方法添加到上面,Es6是先将父类实例对象上的属性挂载this上面,然后再在子类中修改this
      
    </script>
  </body>
</html>
